/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package network.packets;

import datamodel.Order;
import java.util.Vector;
import utils.StringUtils;
import utils.Utils;

/**
 *
 * @author Kvest
 */
public class PreOrdersResponse extends Packet
{
    private Vector orders;
    
    public PreOrdersResponse(byte[] data)
    {
        super(PREORDERS_RESPONCE);
        orders = new Vector();
        
        parse(data);
    }
    
    protected void parse(byte[] data)
    {
        int offset = 0;
        
        //Пропускаем название пакета
        byte[] buffer4 = new byte[4];
        System.arraycopy(data, offset, buffer4, 0, buffer4.length);
        offset += buffer4.length + Utils.byteToInt(buffer4);
        
        //Находим количество заказов
        System.arraycopy(data, offset, buffer4, 0, buffer4.length);
        offset += buffer4.length;
        int ordersCount = Utils.byteToInt(buffer4);
        
        OrderResponce4 tmp;
        int dataSize, count;
        String signed;
        byte[] buffer;
   
        //Перебераем все заказы
        for (int i = 0 ; i < ordersCount; ++i)
        {
            System.arraycopy(data, offset, buffer4, 0, buffer4.length);
            offset += buffer4.length;
            dataSize = Utils.byteToInt(buffer4);
     
            tmp = new OrderResponce4(OrderResponce4.ORDER_RESPONCE4);
            tmp.createOrder();
            tmp.parse(data, offset);
            offset += dataSize;
         
            //Помечаем что заказ предварительный
            tmp.getOrder().setPreliminary(true);
            
//            //ПОдписавшиеся позывные
//            signed = "";
//            System.arraycopy(data, offset, buffer4, 0, buffer4.length);
//            offset += buffer4.length;
//            count = Utils.byteToInt(buffer4);
        
//            for (int j = 0; j < count; ++j)
//            {
//                System.arraycopy(data, offset, buffer4, 0, buffer4.length);
//                offset += buffer4.length;
//                dataSize = Utils.byteToInt(buffer4);
//                buffer = new byte[dataSize];
//                System.arraycopy(data, offset, buffer, 0, buffer.length);
//                offset += buffer.length;
//                signed += StringUtils.bytesToStr(buffer);
//                
//                if (j != (count - 1))
//                {
//                    signed += ",";
//                }
//            }
//            
//            tmp.getOrder().setSigned(signed);
            orders.addElement(tmp.getOrder());
        }
        
        //Подписавшиеся
        for (int i = 0; i < ordersCount; ++i)
        {
            signed = "";
            System.arraycopy(data, offset, buffer4, 0, buffer4.length);
            offset += buffer4.length;
            count = Utils.byteToInt(buffer4);
            
            for (int j = 0; j < count; ++j)
            {
                System.arraycopy(data, offset, buffer4, 0, buffer4.length);
                offset += buffer4.length;
                dataSize = Utils.byteToInt(buffer4);
                buffer = new byte[dataSize];
                System.arraycopy(data, offset, buffer, 0, buffer.length);
                offset += buffer.length;
                signed += StringUtils.bytesToStr(buffer);
                
                if (j != (count - 1))
                {
                    signed += ",";
                }
            }

//            tmpString = ((Order)orders.elementAt(i)).getSigned();
//            if (tmpString.equals(""))
//            {
//            ((Order)orders.elementAt(i)).setSigned(signed);
//            }
//            else
//            {
//                ((Order)orders.elementAt(i)).setSigned(tmpString + "," + signed);
//            }
        }
        
        buffer4 = null;
        buffer = null;
        tmp = null;
    }
    
    public int count()
    {
        return orders.size();
    }

    public Order getOrder(int index)
    {
        return (Order)orders.elementAt(index);
    }
}
